//
//  OAuthViewController.swift
//  weibo-01
//
//  Created by 韩家奇 on 15/11/6.
//  Copyright © 2015年 hanjiaqi. All rights reserved.
//

import UIKit
import SVProgressHUD
class OAuthViewController: UIViewController {

    private lazy var webView = UIWebView()
    //监听方法 motal出控制器 必须使用dismiss
    @objc private func close() {
        SVProgressHUD.dismiss()
        dismissViewControllerAnimated(true, completion: nil)
    }
    /// 自动填充用户名和密码 - 以代码的方式象web页面添加内容
    @objc private func autofill() {
        let js = "document.getElementById('userId').value = '18639952074';" +
        "document.getElementById('passwd').value = 'han6323318';"
//        let js = "document.getElementById('userId').value = 'daoge10000@sina.cn';" +
//        "document.getElementById('passwd').value = 'qqq123';"
        //让webView执行JS
        webView.stringByEvaluatingJavaScriptFromString(js)
    }
    //设置界面
    override func loadView() {
        view = webView
        //设置代理
        webView.delegate = self
        //设置导航栏
        title = "登陆新浪微博"
        navigationItem.leftBarButtonItem = UIBarButtonItem(title: "关闭", style: .Plain, target: self, action: "close")
        //在导航栏设置一个自动天聪的item
        navigationItem.rightBarButtonItem = UIBarButtonItem(title: "自动填充", style: .Plain, target: self, action: "autofill")
    }
    override func viewDidLoad() {
        super.viewDidLoad()
        //纯代码开发中  尽量给每个视图都设置背景颜色
//        print(view.backgroundColor)
        view.backgroundColor = UIColor.whiteColor()
        
        //加载页面
        self.webView.loadRequest(NSURLRequest(URL: NetworkTools.sharedTools.oauthURL))

        
    }
}
/// 将要加载请求的代理方法
///
/// - parameter webView:        webView
/// - parameter request:        将要加载的请求
/// - parameter navigationType: navigationType，页面跳转的方式
///
/// - returns: 返回 false 不加载，返回 true 继续加载
/// 如果 iOS 的代理方法中有返回 bool，通常返回 true 很正常，返回 false 不能正常工作

extension OAuthViewController: UIWebViewDelegate {
    func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {
        // 目标：如果是百度，就不加载
        // 1. 判断访问的主机是否是 www.baidu.com
        guard let url = request.URL where url.host ==  "www.baidu.com" else {
            return true
        }
        //2. 从百度地址的url 中提取code = 是否存在
        guard let query = url.query where query.hasPrefix("code=") else {
            print("取消授权")
            close()
            return false
        }
        //3.从query字符串中提取code = 后面的授权码
        let code = query.substringFromIndex("code=".endIndex)
        print(query)
        print("授权码是" + code)
        //  - 4.加载accesstoken
//        NetworkTools.sharedTools.loadAccessToken(code) { (result, error) -> () in
        UserAccountViewModel.sharedUserAccount.loadAccessToken(code) { (isSuccess) -> () in
            //finishe的完整代码
//            if isSuccess {
//                print("成功了")
//                print(UserAccountViewModel.sharedUserAccount.account)
//            }else{
            if !isSuccess{
//                print("失败了")
                SVProgressHUD.showInfoWithStatus("您的网络不给力")
                
                delay(0.5) { self.close() }

                return
            }
            print("成功了")
            self.dismissViewControllerAnimated(false) {
                // 停止指示器
                SVProgressHUD.dismiss()

                //通知中心是同步的 一旦发送通知 先执行监听方法 结束后才区执行后续嗲吗
                NSNotificationCenter.defaultCenter().postNotificationName(HQSwitchRootViewControllerNotification, object: "welcome")
            }
        }
        return false
    }
    func webViewDidStartLoad(webView: UIWebView) {
        SVProgressHUD.show()
    }
    
    func webViewDidFinishLoad(webView: UIWebView) {
        SVProgressHUD.dismiss()
    }

}